import java.rmi.RemoteException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.net.MalformedURLException; 

public class CalculDeuxClient {


	public static void main (String[] args){
		CalculInterface lol = null;
		CalculInterface lol1 = null;
		long time = System.currentTimeMillis();
		try{

			lol = (CalculInterface) Naming.lookup("//mayenne.polytechnique.fr:1143/Calcula");
			lol1 = (CalculInterface) Naming.lookup("//mayenne.polytechnique.fr:1143/Calculb");
		}
		catch (NotBoundException e){
			System.out.println ("\"//marne.polytechnique.fr/Hello\" does not exist");
		} catch (MalformedURLException e) {
			System.out.println ("\"//marne.polytechnique.fr/Hello\" not a valid URL ");
		} catch (RemoteException e) {
			System.out.println ("Some remote exception in lookup"+e);
		}
		try {
			String ligne = lol.getStringLigne();
			String colonne = lol.getStringColonne();

			if(ligne.length() > colonne.length()){
				String lolilol = ligne;
				ligne = colonne;
				colonne = lolilol;
			}
			int[][] resultat = new int[ligne.length()+1][colonne.length()+1];
			int[] tab = new int[ligne.length()+1];
			for(int j = 0; j<=ligne.length(); j++) {
				resultat[j][0] = j;
			}
			for(int j = 0; j<=colonne.length(); j++) {
				resultat[0][j] = j;
			}

			int compteur= 0;
			for(int j = 1;j<=colonne.length(); j++)
			{
				int[] ligneCalculee = lol.calcul(j,resultat[j][j-1],resultat[j-1]);
				for(int l = j; l <ligne.length(); l++) 
				{
					resultat[j][l] = ligneCalculee[l-j+1];		
				}
				for(int k = 0; k<=ligne.length(); k++){
					tab[k] = resultat[k][j-1]; 
				}

				int[] colonneCalculee = lol1.calcul(j, resultat[j-1][j], tab);
				for(int l = j; l<colonneCalculee.length+compteur; l++)
				{
					resultat[l][j] = colonneCalculee[l-j+1];
				}
				compteur++;
			}
			for(int j = colonne.length(); j<= ligne.length(); j++)
			{
				int[] ligneCalculee = lol.calcul(j,resultat[j][j-1],resultat[j-1]);
				for(int l = j; l <= colonne.length(); l++) 
				{
					resultat[j][l] = ligneCalculee[l-j];		
				}
			}
			int result = resultat[ligne.length()-1][ligne.length()-1];
            time = System.currentTimeMillis() -time;
            System.out.println(result);
            System.out.println(time);
			

		} catch (RemoteException e) { 
			System.out.println ("Some remote exception for hello.say()"+e);
		}
	}
}
